<?php

class myUser extends sfGuardSecurityUser {
  
  public function droitConsultationCalendrier(Salarie $salarie) {
    if($salarie->getsfGuardUser()->getPrimaryKey() == $this->getGuardUser()->getPrimaryKey() && ($salarie->getsfGuardUser()->hasPermission('view_self') || $this->getUser()->hasPermission('view_all'))) {
      $this->setFlash('notice', "Vous ne pouvez pas consulter cette feuille de temps !");
      return false;
    } else
      return true;
  }
  
  public function droitModificationCalendrier(Salarie $salarie, $uf_id=null) {
    if($uf_id) {
      $uf = UniteFonctionnellePeer::retrieveByPk($uf_id);
      if(!$uf instanceof UniteFonctionnelle) {
        $this->setFlash('notice', "Aucune unité fonctionnelle ne correspond à l'identifiant indiqué: \"$uf\" !");
        return false;
      }
    }
    
    $coll_responsable = SalariePeer::getSalariesByUserId($this->getGuardUser()->getPrimaryKey());
    $responsable = count($coll_responsable) ? array_pop($coll_responsable) : null;
    $is_responsable = false;

    if(($responsable instanceof Salarie && (isset($uf) && $responsable->isResponsable($uf) && $salarie->isPartOfUniteFonctionnelle($uf))))
      $is_responsable = true;

    if($salarie->getsfGuardUser()->getPrimaryKey() != $this->getGuardUser()->getPrimaryKey() && !$is_responsable) {
      $this->setFlash('notice', "Vous n'avez pas les droits de modification sur cette feuille de temps !");
      return false;
    } else
      return true;
  }
  
}
